package com.michale.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.michale.common.domain.system.ConfigEntity;
import io.swagger.annotations.Api;

import java.util.List;

/**
 * @author Michale
 * @apiNote  参数配置表 服务层
 */
@Api(value = "参数配置表-服务类")
public interface ConfigService extends IService<ConfigEntity> {

    /**
     * 分页查询-参数列表
     *
     * @param configEntity 分页查询条件
     * @return 参数配置列表
     */
    List<ConfigEntity> selectConfigList(ConfigEntity configEntity);

    /**
     * 根据参数键名查询参数值
     *
     * @param configKey 参数键名
     * @return 参数键值
     */
    String selectConfigByKey(String configKey);

    /**
     * 获取验证码开关
     *
     * @return true/false
     */
    boolean selectCaptchaEnabled();

    /**
     * 获取验证码开关
     *
     * @return true/false
     */
    boolean selectRegister();
    /**
     * 根据参数编号获取详细信息
     *
     * @param configId 参数配置ID
     * @return 参数详细信息
     */
    ConfigEntity selectConfigById(Long configId);

    /**
     * 新增参数配置
     *
     * @param configEntity 参数配置
     * @return 结果
     */
    int insertConfig(ConfigEntity configEntity);

    /**
     * 修改参数配置
     *
     * @param configEntity 参数配置信息
     * @return 结果
     */
    int updateConfig(ConfigEntity configEntity);

    /**
     * 根据参数配置编号删除配置信息
     *
     * @param configIds 需要删除的参数配置ID
     */
    void deleteConfigByIds(Long[] configIds);

    /**
     * 校验参数键名是否唯一
     *
     * @param configEntity 参数信息
     * @return 结果
     */
    String checkConfigKeyUnique(ConfigEntity configEntity);

    /**
     * 刷新参数缓存
     */
    void resetConfigCache();

    /**
     * 加载参数缓存数据
     */
    void loadingConfigCache();

    /**
     * 清空参数缓存数据
     */
    void clearConfigCache();
}
